home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / simon.bas < prev    next >
BASIC Source File  |  1988-11-09  |  6KB  |  135 lines

  1. 10 REM ************ save as "simon.bas" ***************
  2. 20 REM *** Author - David Lorenz, Matthews NC ***
  3. 30 DEFINT A-Z
  4. 40 KEY OFF:CLS:PRINT "In order for you to observe me, you must have graphics on your computer."
  5. 50 PRINT:PRINT "Well, don't just sit there! Do you or do you not have graphics (Y/N)";:INPUT YN$:IF YN$="Y" OR YN$="y" THEN GOTO 60 ELSE IF YN$="N" OR YN$="n" THEN SYSTEM ELSE GOTO 50
  6. 60 CLS:PRINT
  7. 70 PRINT
  8. 80 PRINT "Welcome to me! My name is as it has been for many years - Simon."
  9. 90 PRINT
  10. 100 PRINT "I desire to play a game with you. A game that requires a good memory"
  11. 110 PRINT "on your part. Of course, I never forget anything and I never make eny mistakes."
  12. 120 PRINT
  13. 130 PRINT "Here's how to play the game:":PRINT
  14. 140 PRINT "My last name is 'SAYS'. Do you understand what I'm saying? (I can hardly"
  15. 150 PRINT "keep up with myself sometimes) When I display one of four colored blocks,"
  16. 160 PRINT "you should press the associated key that represents that block - either HOME,"
  17. 170 PRINT "PAGE UP, PAGE DOWN, or END. The relative positions of these keys on your IBM"
  18. 180 PRINT "keyboard are layout to look like the 4 possible blocks I will display. If you"
  19. 190 PRINT "get that one right, I will then not only display that block again but will also"
  20. 200 PRINT "display another one. Now not only do you have to press the original key, but youmust press the the key that represents the new block. The play goes on and on"
  21. 210 PRINT "until you forget the sequence of blocks. I will then show you what you missed."
  22. 220 PRINT "Even my 11 year old daughter gets in the low 20's all the time..."
  23. 230 PRINT "Now press <RTN> to (in the words of Clint Eastwood) 'Go ahead, make my play'"
  24. 240 INPUT DUMMY$
  25. 250 HAPPYDAYS$="T200MS O2L4C L8E MLL8EL4E MSG G O3L8C L4C L4C E L8C MLL4CL8C MSO2L4G msG L8E L2E"
  26. 260 DIM KEEP(99),SCORE(9),DTE$(9),YN$(9)
  27. 270 SCREEN 1:GOSUB 980
  28. 280 BGROUND=0:PALETTE=0:COLORS=1
  29. 290 EPATTERN$=CHR$(&H1)  'error pattern
  30. 300 MPATTERN$=CHR$(&HFF) 'merlins
  31. 310 YPATTERN$=CHR$(&HCC) 'your
  32. 320 COLOR BGROUND,PALETTE
  33. 330 RANDOMIZE TIMER
  34. 340 REM ---- determine computer speed -
  35. 350 CLS:PRINT " Simon is now checking to see how fast  your computer is... Please wait."
  36. 360 TIME1!=TIMER
  37. 370 FOR A=0 TO 9999:NEXT
  38. 380 TIME2!=TIMER
  39. 390 DL#=4.12/(TIME2!-TIME1!)*1500
  40. 400 IF DL#>32767 THEN DL#=32767
  41. 410 INPUT "Please give Simon your name...",YOURNAME$
  42. 420 REM ---------------------------------
  43. 430 CLS:J=-1:DEL=DL#
  44. 440 LOCATE 1,10:PRINT "Welcome to Simon!";
  45. 450 LOCATE 1,37:PRINT PRECORD;
  46. 460 LOCATE 3,6:PRINT "Home";
  47. 470 LOCATE 3,28:PRINT "PgUp";
  48. 480 LOCATE 23,6:PRINT "End";
  49. 490 LOCATE 23,28:PRINT "PgDn";
  50. 500 LOCATE 24,10:PRINT "Simon's turn  ";
  51. 510 LINE (50,25)-(240,175),2,B
  52. 520 DRAW "m-095,0 u150 bm-95,75 r190 bm-95,0"
  53. 530 PATTERN$=MPATTERN$
  54. 540 CHOICE=INT(RND*4)
  55. 550 J=J+1:KEEP(J)=CHOICE
  56. 560 FOR K=0 TO J:CHOICE=KEEP(K):DEF SEG=0:POKE 1050,PEEK(1052):GOSUB 770:NEXT
  57. 570 L=-1:LOCATE 24,10:PRINT "Your turn to try"J+1;
  58. 580 PATTERN$=YPATTERN$:DEL=0
  59. 590 WHILE L<J
  60. 600 PRESS$=INKEY$:IF PRESS$="" OR LEN(PRESS$)<>2 GOTO 600
  61. 610 L=L+1
  62. 620 KEYED=ASC(RIGHT$(PRESS$,1))
  63. 630 CHOICE=9
  64. 640 IF KEYED=81 THEN CHOICE=0 'PgDn
  65. 650 IF KEYED=79 THEN CHOICE=1 'End
  66. 660 IF KEYED=71 THEN CHOICE=2 'Home
  67. 670 IF KEYED=73 THEN CHOICE=3 'PgUp
  68. 680 IF CHOICE=9 THEN GOTO 600
  69. 690 GOSUB 770
  70. 700 IF CHOICE<>KEEP(L) THEN DEL=DL#:SOUND 80,50:GOTO 870
  71. 710 LOCATE 24,20:PRINT L+2 "out of" J+1;
  72. 720 WEND
  73. 730 DEL=DL#
  74. 740 LOCATE 24,10:PRINT "Simon's turn                 ";
  75. 750 FOR I=0 TO 3*DEL:NEXT
  76. 760 GOTO 530
  77. 770 REM -------------------------------
  78. 780 ON CHOICE+1 GOTO 790,810,830,850
  79. 790 PAINT STEP (40,40),PATTERN$,2:DRAW "bm-40,-40":SOUND 523,10:FOR I=0 TO DEL:NEXT
  80. 800 PAINT STEP (40,40),0,2:DRAW "bm-40,-40":FOR I=0 TO DEL:NEXT:RETURN
  81. 810 PAINT STEP (-40,40),PATTERN$,2:DRAW "bm+40,-40":SOUND 659,10:FOR I=0 TO DEL:NEXT
  82. 820 PAINT STEP (-40,40),0,2:DRAW "bm+40,-40":FOR I=0 TO DEL:NEXT:RETURN
  83. 830 PAINT STEP (-40,-40),PATTERN$,2:DRAW "bm+40,+40":SOUND 784,10:FOR I=0 TO DEL:NEXT
  84. 840 PAINT STEP (-40,-40),0,2:DRAW "bm+40,+40":FOR I=0 TO DEL:NEXT:RETURN
  85. 850 PAINT STEP (40,-40),PATTERN$,2:DRAW "bm-40,+40":SOUND 1046,10:FOR I=0 TO DEL:NEXT
  86. 860 PAINT STEP (40,-40),0,2:DRAW "bm-40,+40":FOR I=0 TO DEL:NEXT:RETURN
  87. 870 REM --------------------------
  88. 880 IF J>PRECORD THEN PRECORD=J
  89. 890 DEL=0
  90. 900 LOCATE 24,10:PRINT "Here's the correct way!       ";
  91. 910 FOR K=0 TO J:CHOICE=KEEP(K)
  92. 920 IF K=L THEN DEL=DL#:PATTERN$=EPATTERN$ ELSE DEL=0:PATTERN$=MPATTERN$
  93. 930 GOSUB 780:NEXT
  94. 940 GOSUB 1190
  95. 950 LOCATE 11,8:PRINT "You got " L "right out of " J+1
  96. 960 LOCATE 12,8:INPUT "Wanna play again? (y/n)",YN$
  97. 970 IF YN$="y" OR YN$="Y" THEN GOTO 430 ELSE IF YN$="n" OR YN$="N" THEN SYSTEM ELSE GOTO 960
  98. 980 REM ------------ Display Score History ----------------
  99. 990 ON ERROR GOTO 1150
  100. 1000 OPEN "I",#1,"simon.dat"
  101. 1010 ON ERROR GOTO 1180
  102. 1020 INPUT #1,SCORE(0),DTE$(0),YN$(0),SCORE(1),DTE$(1),YN$(1),SCORE(2),DTE$(2),YN$(2),SCORE(3),DTE$(3),YN$(3),SCORE(4),DTE$(4),YN$(4),SCORE(5),DTE$(5),YN$(5),SCORE(6),DTE$(6),YN$(6),SCORE(7),DTE$(7),YN$(7),SCORE(8),DTE$(8),YN$(8),SCORE(9),DTE$(9),YN$(9)
  103. 1030 CLOSE #1
  104. 1040 CLS:PRINT "The Parade of All-Time Champs!":PRINT:PRINT "Score   Date      Name"
  105. 1050 COLOR BGROUND,PALETTE
  106. 1060 FOR I=0 TO 9
  107. 1070 IF I=II THEN COLOR 16,BGROUND,PALETTE
  108. 1080 PRINT SCORE(I) DTE$(I) SPACE$(5) YN$(I):
  109. 1090 COLOR BGROUND,PALETTE
  110. 1100 NEXT
  111. 1110 INPUT "<RTN> to resume",DUMMY$
  112. 1120 CLS
  113. 1130 ON ERROR GOTO 0
  114. 1140 RETURN
  115. 1150 OPEN "O",#1,"simon.dat",256
  116. 1160 CLOSE #1
  117. 1170 RESUME 1040
  118. 1180 RESUME NEXT
  119. 1190 REM ---------- see if a new winner (history) -----
  120. 1200 FOR I=0 TO 9
  121. 1210    II=9-I
  122. 1220    IF SCORE(II)<J THEN GOSUB 1240:PLAY HAPPYDAYS$:GOSUB 980:RETURN
  123. 1230 NEXT:RETURN
  124. 1240 REM --------- shift the score array, etc. ----------------
  125. 1250 FOR JJ=0 TO II-1
  126. 1260   SCORE(JJ)=SCORE(JJ+1)
  127. 1270   DTE$(JJ)=DTE$(JJ+1)
  128. 1280   YN$(JJ)=YN$(JJ+1)
  129. 1290 NEXT
  130. 1300 SCORE(II)=J:YN$(II)=YOURNAME$:DTE$(II)=DATE$
  131. 1310 OPEN "O",#1,"simon.dat",256
  132. 1320 WRITE #1,SCORE(0),DTE$(0),YN$(0),SCORE(1),DTE$(1),YN$(1),SCORE(2),DTE$(2),YN$(2),SCORE(3),DTE$(3),YN$(3),SCORE(4),DTE$(4),YN$(4),SCORE(5),DTE$(5),YN$(5),SCORE(6),DTE$(6),YN$(6),SCORE(7),DTE$(7),YN$(7),SCORE(8),DTE$(8),YN$(8),SCORE(9),DTE$(9),YN$(9)
  133. 1330 CLOSE #1
  134. 1340 RETURN
  135.